

var APIHost = "https://hxhcarcolorapi.mgee.vip/api/"
//var APIHost = "https://hxhcarcolorapi.yokfilm.com/api/"
//var APIHost =  "http://localhost:5005/api/"

var imageHost = "https://appcarapi.kemangouwu.top/image/"
var localstorage = require("./localstorage.js");

//统一的网络请求方法,普通请求，不带token，
function request(params) {

  var globalData = getApp().globalData;
  if (params.showToastStr != undefined) {
    wx.showLoading({
      title: params.showToastStr,
    })

  }
 
  wx.request({
    url: APIHost + params.url, //接口请求地址
    data: params.data,
    header: {
      'userId': globalData.userId,
      'usercarid': globalData.defaultCar ? globalData.defaultCar.id : '0'
    },
    method: params.method == undefined ? "get" : params.method,
    dataType: 'json',
    responseType: params.responseType == undefined ? 'text' : params.responseType,
    success: function (res) {
      //console.log("请求返回：", res)
     
      wx.hideLoading();
      if (res.statusCode < 300) {   //正常返回200以及201空的
        if (params.callBack) {
          params.callBack(res.data);
        }
      } else if (res.statusCode == 401) {  //授权问题
        // 添加到请求队列
        globalData.requestQueue.push(params);
        if (!globalData.isLanding) {
          globalData.isLanding = true
          //重新获取token,再次请求接口
          getToken();
        }
      } else if (res.statusCode == 400) {  //要提示的错误

        var message = typeof (res.data) == 'object' ? res.data.message : res.data

        wx.showModal({
          title: message,
          showCancel: false,
        });

      } else {  //其他错误
        if (params.errCallBack) { //如果有定义错误回调
          params.errCallBack(res);
        } else {

          setTimeout(() => {
            wx.showToast({
              title: "服务器出了点小差",
              icon: "none"
            })
          }, 1)
        }
      }
    },
    fail: function (err) {
   
      wx.hideLoading();
      setTimeout(() => {
        wx.showToast({
          title: "服务器出了点小差",
          icon: "none"
        });
      }, 1)

    },
    complete: function () {
    
      if (params.complete) {
        params.complete();
      }
    }
  })
}

//统一的网络请求方法 ，带token请求，
function requestToken(params) {
  // 全局变量
  var globalData = getApp().globalData;
  if (globalData.isLanding) {
    globalData.requestQueue.push(params);
    return;
  }
  
  if (params.showToastStr != undefined) {
    wx.showLoading({
      title: params.showToastStr,
    })

  }

  wx.request({
    url: APIHost + params.url, //接口请求地址
    data: params.data,
    header: {
      'userId': globalData.userId,
      'usercarid': globalData.defaultCar ? globalData.defaultCar.id : '0'
    },
    method: params.method == undefined ? "get" : params.method,
    dataType: 'json',
    responseType: params.responseType == undefined ? 'text' : params.responseType,
    success: function (res) {
      //console.log("请求返回：", res)
     
      wx.hideLoading();
      if (res.statusCode < 300) {   //正常返回200以及201空的
        if (params.callBack) {
          params.callBack(res.data);
        }
      } else if (res.statusCode == 401) {  //授权问题
        // 添加到请求队列
        globalData.requestQueue.push(params);
        if (!globalData.isLanding) {
          globalData.isLanding = true
          //重新获取token,再次请求接口
          getToken();
        }
      } else if (res.statusCode == 400) {  //要提示的错误

        var message = typeof (res.data) == 'object' ? res.data.message : res.data

        wx.showModal({
          title: message,
          showCancel: false,
        });

      } else {  //其他错误
        if (params.errCallBack) { //如果有定义错误回调
          params.errCallBack(res);
        } else {

          setTimeout(() => {
            wx.showToast({
              title: "服务器出了点小差",
              icon: "none"
            })
          }, 1)
        }
      }
    },
    fail: function (err) {
   
      wx.hideLoading();
      setTimeout(() => {
        wx.showToast({
          title: "服务器出了点小差",
          icon: "none"
        });
      }, 1)

    },
    complete: function () {
      
      if (params.complete) {
        params.complete();
      }
    }
  })
}

//统一的网络请求方法，带touken并且检测是否又授权更多信息
function requestCheckMore(params, isGetTonken) {
  // 全局变量
  var globalData = getApp().globalData;
  if (!isGetTonken && globalData.isLanding) {
    globalData.requestQueue.push(params);
    return;
  }
  
  if (params.showToastStr != undefined) {
    wx.showLoading({
      title: params.showToastStr,
    })

  }

  wx.request({
    url: APIHost + params.url, //接口请求地址
    data: params.data,
    header: {
      'userId': globalData.userId,
      'usercarid': globalData.defaultCar ? globalData.defaultCar.id : '0'
    },
    method: params.method == undefined ? "get" : params.method,
    dataType: 'json',
    responseType: params.responseType == undefined ? 'text' : params.responseType,
    success: function (res) {
      
      //console.log("请求返回：", res)
      wx.hideLoading();
      if (res.statusCode < 300) {   //正常返回200以及201空的
        if (params.callBack) {
          params.callBack(res.data);
        }
      } else if (res.statusCode == 401) {  //授权问题
        // 添加到请求队列
        globalData.requestQueue.push(params);
        if (!globalData.isLanding) {
          globalData.isLanding = true
          //重新获取token,再次请求接口
          getToken();
        }
      } else if (res.statusCode == 400) {  //要提示的错误

        var message = typeof (res.data) == 'object' ? res.data.message : res.data

        wx.showModal({
          title: message,
          showCancel: false,
        });

      } else {  //其他错误
        if (params.errCallBack) { //如果有定义错误回调
          params.errCallBack(res);
        } else {

          setTimeout(() => {
            wx.showToast({
              title: "服务器出了点小差",
              icon: "none"
            })
          }, 1)
        }
      }
    },
    fail: function (err) {
  
      wx.hideLoading();
      setTimeout(() => {
        wx.showToast({
          title: "服务器出了点小差",
          icon: "none"
        });
      }, 1)

    },
    complete: function () {
     
      if (params.complete) {
        params.complete();
      }
    }
  })
}


///目前只用换openid 就够用了，
//之后逐步提示授权绑定信息，
//再有其他业务需求时硬性绑定手机号 
function getToken() {
 
  wx.login({
    success: function (res) {
      //用上面那个request 方法封装网络请求
      request({
        showToastStr: "登录中",
        url: 'car_appuserServiceaPI/Login',
        method: 'POST',
        data: {
          code: res.code,
        },
        callBack: result => {
           
          localstorage.setUser(result.userId)
          var globalData = getApp().globalData
       //   checkcar(result.defaultCar)
          globalData.isLanding = false;
          //设置token用来 预加载数据
          // wx.setBackgroundFetchToken({
          //   token: result.userId+'|'+result.defaultCar.id
          // })

          while (globalData.requestQueue.length) {
            request(globalData.requestQueue.pop());
          }
        }
      }, true)
    }
  })
}
function checkcar(defaultCar) {
  if (defaultCar == null) {
    wx.showModal({
      title: '未添加车辆',
      content: '未设置您的车辆，是否现在添加',
      success: function (res) {
        if (res.confirm) {
          wx.redirectTo({
            url: '../newuser/newuser'
          })
        }
      }
    })
  }
}

module.exports = {
  APIHost: APIHost,
  imageHost: imageHost,
  request: request,
  requestToken:requestToken,
  requestCheckMore:requestCheckMore,
  getToken: getToken,
  checkcar:checkcar

}